#ifndef MYQJSON_H
#define MYQJSON_H

#include <QString>

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>

#include  <QDebug>


typedef struct _DAT_ARRY
{
   QString   QS_var_name;        // 变量名
   QString   QS_frame_id;        // 帧ID
   QString   QS_header;          // 帧头
   QString   QS_header_Ptr;      // 帧头开始位置
   QString   QS_header_len;      // 帧头长度
   QString   QS_data_type;       // 数据类型
   QString   QS_data_ptr;        // 数据开始位置
   QString   QS_data_len;        // 数据解析长度
   QString   QS_offset;          // 数据偏置
   QString   QS_dis_real_coff;   // 显示值和实际值的倍率
   QString   QS_up_Limt;         // 报警上限/输入上限
   QString   QS_dn_Limt;         // 报警下限/输入下限
   QString   QS_sci_1Master2Slave;
   QString   QS_sci_Addr;
   QString   QS_sci_Data_Type;
   QString   QS_sci_0Big1Little;
}QS_sDatArry;


typedef struct _VAL_ARRY
{
   QString    var_name;        // 变量名
   uint32_t   frame_id;        // 帧ID
   uint16_t   header;          // 帧头
   uint16_t   header_ptr;      // 帧头开始位置
   uint16_t   header_len;      // 帧头长度
   uint16_t   data_type;       // 数据类型
   uint16_t   data_ptr;        // 数据开始位置
   uint16_t   data_len;        // 数据解析长度
   uint16_t   offset;          // 数据偏置
   double     dis_real_coff;   // 显示值和实际值的倍率
   double     up_Limt;         // 报警上限/输入上限
   double     dn_Limt;         // 报警下限/输入下限
   uint16_t   sci_1Master2Slave;
   uint16_t   sci_Addr;
   uint16_t   sci_Data_Type;
   uint16_t   sci_0Big1Little;
}sValArry;


QJsonObject createNewJsonObject( QS_sDatArry Dat);
uint16_t insertIntoOrCreateJsonFile(const QString &filePath, const QJsonObject &newObject) ;

QJsonArray readJsonArrayFromFile(const QString& filePath);
QList<sValArry> parseJsonArray(const QJsonArray &jsonArray);

#endif // MYQJSON_H
